package com.etoak.controller;
import cn.hutool.core.util.IdUtil;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class UploadController {

    public static final String JPG = "image/jpeg";

    public static final String PNG = "image/png";

    /**
     * 图片上传接口
     * 接口地址：
     * 请求方法POST
     * 请求参数：file
     * 请求参数类型：multipart/form-data
     * @return
     */
    @PostMapping(value = "/upload", produces = "text/plain;charset=utf-8")
    public String upload(MultipartFile file) throws IOException {
        /**
         * 判断文件是否为空
         */
        if (ObjectUtils.isEmpty(file) || file.isEmpty()) {
            return "文件不能为空";
        }
        /** 判断图片类型 */
        String contentType = file.getContentType();// 判断是否包含 ，png ，jpg
        if (!StringUtils.equalsAny(contentType,JPG,PNG)) {
            return "仅支持JPG和PNg格式的图片 ~ ";
        }
        /**
         * 修改文件名称
         * FilenameUtils.getExtension : 拿到文件原始名称
         * file.getOriginalFilename() : 文件原始名称
         * extension：扩展名 png
         */
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
        String uuid = IdUtil.simpleUUID();
        String filename = StringUtils.join(uuid, ".", extension); // 将扩展名 和 uuid进行拼接操作 ~

        /* 创建上传目录 */
        File uploadDir = new File("d:/upload/et2204");
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();
        }

        /* 创建目标文件 */
        File destFile = new File(uploadDir,filename);

        // 上传
        file.transferTo(destFile);

        String path = "/pics/" + filename;

        return path;

    }





}
